{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Chapater 2 Code - Python 3 version\n",
    "\n",
    "### simpleBagging.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54f2161f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e4bee748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum MSE\n",
      "0.0293239640579636\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import numpy\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from math import floor\n",
    "import random\n",
    "\n",
    "\n",
    "#Build a simple data set with y = x + random\n",
    "nPoints = 1000\n",
    "\n",
    "#x values for plotting\n",
    "xPlot = [(float(i)/float(nPoints) - 0.5) for i in range(nPoints + 1)]\n",
    "\n",
    "#x needs to be list of lists.\n",
    "x = [[s] for s in xPlot]\n",
    "\n",
    "#y (labels) has random noise added to x-value\n",
    "#set seed\n",
    "random.seed(1)\n",
    "y = [s + numpy.random.normal(scale=0.1) for s in xPlot]\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "nSample = int(nPoints * 0.30)\n",
    "idxTest = random.sample(range(nPoints), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nPoints) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [x[r] for r in idxTrain]\n",
    "xTest = [x[r] for r in idxTest]\n",
    "yTrain = [y[r] for r in idxTrain]\n",
    "yTest = [y[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 20\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 1\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "predList = []\n",
    "\n",
    "#number of samples to draw for stochastic bagging\n",
    "nBagSamples = int(len(xTrain) * 0.5)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "    idxBag = []\n",
    "    for i in range(nBagSamples):\n",
    "        idxBag.append(random.choice(range(len(xTrain))))\n",
    "    xTrainBag = [xTrain[i] for i in idxBag]\n",
    "    yTrainBag = [yTrain[i] for i in idxBag]\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "    modelList[-1].fit(xTrainBag, yTrainBag)\n",
    "\n",
    "    #make prediction with latest model and add to list of predictions\n",
    "    latestPrediction = modelList[-1].predict(xTest)\n",
    "    predList.append(list(latestPrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #average first \"iModels\" of the predictions\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)])/(iModels + 1))\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Models in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "plotList = [0, 9, 19]\n",
    "for iPlot in plotList:\n",
    "    plot.plot(xTest, allPredictions[iPlot])\n",
    "plot.plot(xTest, yTest, linestyle=\"--\")\n",
    "plot.axis('tight')\n",
    "plot.xlabel('x value')\n",
    "plot.ylabel('Predictions')\n",
    "plot.show()\n",
    "\n",
    "print('Minimum MSE')\n",
    "print(min(mse))\n",
    "\n",
    "\n",
    "#With treeDepth = 1\n",
    "#Minimum MSE\n",
    "#0.0242960117899\n",
    "\n",
    "\n",
    "\n",
    "#With treeDepth = 5\n",
    "#Minimum MSE\n",
    "#0.0118893503384"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### simpleGBM.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nRK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e72eecf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n/NjBeAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54f1503ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import numpy\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from math import floor\n",
    "import random\n",
    "\n",
    "#Build a simple data set with y = x + random\n",
    "nPoints = 1000\n",
    "\n",
    "#x values for plotting\n",
    "xPlot = [(float(i)/float(nPoints) - 0.5) for i in range(nPoints + 1)]\n",
    "\n",
    "#x needs to be list of lists.\n",
    "x = [[s] for s in xPlot]\n",
    "\n",
    "#y (labels) has random noise added to x-value\n",
    "#set seed\n",
    "numpy.random.seed(1)\n",
    "y = [s + numpy.random.normal(scale=0.1) for s in xPlot]\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "nSample = int(nPoints * 0.30)\n",
    "idxTest = random.sample(range(nPoints), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nPoints) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [x[r] for r in idxTrain]\n",
    "xTest = [x[r] for r in idxTest]\n",
    "yTrain = [y[r] for r in idxTrain]\n",
    "yTest = [y[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 30\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 5\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "predList = []\n",
    "eps = 0.3\n",
    "\n",
    "#initialize residuals to be the labels y\n",
    "residuals = list(yTrain)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "    modelList[-1].fit(xTrain, residuals)\n",
    "\n",
    "    #make prediction with latest model and add to list of predictions\n",
    "    latestInSamplePrediction = modelList[-1].predict(xTrain)\n",
    "\n",
    "    #use new predictions to update residuals\n",
    "    residuals = [residuals[i] - eps * latestInSamplePrediction[i] for i in range(len(residuals))]\n",
    "\n",
    "    latestOutSamplePrediction = modelList[-1].predict(xTest)\n",
    "    predList.append(list(latestOutSamplePrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #add the first \"iModels\" of the predictions and multiply by eps\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)]) * eps)\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Models in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "plotList = [0, 14, 29]\n",
    "lineType = [':', '-.', '--']\n",
    "plot.figure()\n",
    "for i in range(len(plotList)):\n",
    "    iPlot = plotList[i]\n",
    "    textLegend = 'Prediction with ' + str(iPlot) + ' Trees'\n",
    "    plot.plot(xTest, allPredictions[iPlot], label = textLegend, linestyle = lineType[i])\n",
    "plot.plot(xTest, yTest, label='True y Value', alpha=0.25)\n",
    "plot.legend(bbox_to_anchor=(1,0.3))\n",
    "plot.axis('tight')\n",
    "plot.xlabel('x value')\n",
    "plot.ylabel('Predictions')\n",
    "plot.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### simpleTree.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEKCAYAAADuEgmxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xl4o1d58P/vkWRJtuV9H9sznsWz\nJjOTxMlkD9kgaUpCKSS0LKEF8msh5fcWytX8Ci/lpe1blhcoXOUtpJQSoCUkQMiwZWESsk8yE2bJ\n7J54FtvjfZdk7ef3x6NHlm3ZeuRF8njuz3XlsiU9lo9mJrp1n/uc+yitNUIIIYQVtlwPQAghxPlD\ngoYQQgjLJGgIIYSwTIKGEEIIyyRoCCGEsEyChhBCCMskaAghhLBMgoYQQgjLJGgIIYSwzJHLX66U\nug34OmAHvqO1/kKKa+4GPgdo4IDW+k9ne87Kykrd1NS08IMVQohl7PXXX+/XWleluy5nQUMpZQe+\nCdwKdAB7lFI7tdZHkq5pBv4/4Bqt9ZBSqjrd8zY1NbF3797FGrYQQixLSqkzVq7L5fTUFcBJrXWb\n1joEPAzcNeWajwDf1FoPAWite7M8RiGEEElyGTTqgfak2x3x+5KtB9YrpV5SSu2OT2cJIYTIkVzW\nNFSK+6a23HUAzcBbgAbgBaXURVrr4UlPpNR9wH0AK1euXPiRCiGEAHKbaXQAjUm3G4BzKa55XGsd\n1lqfAo5jBJFJtNYPaq1btNYtVVVp6zhCCCHmKJdBYw/QrJRarZRyAu8Bdk655ufAjQBKqUqM6aq2\nrI5SCCFEQs6ChtY6AtwPPAkcBR7RWh9WSn1eKXVn/LIngQGl1BHgWeBTWuuB3IxYCCGEWm4n97W0\ntGhZciuEEJlRSr2utW5Jd53sCBdCiPPU788OcaB9OP2FC0iChhBCnKc++/ghPvPzQ1n9nTltIyKE\nEGJutNac6fcTjMaIRGM47NnJASTTEEKI89CwP8xYMEIoEuNUvy9rv1eChhBCnIfODvoT3x/pGs3a\n75WgIYQQ56EzSUHjWPdY1n6vBA0hhFhAgXA0K7+nPR40mioKOCqZhhBCnH++99Iptvz9kzx/om/R\nf9eZAR9VRS4uXVkmQUMIIc4nsZjmn399lM/94gjRmOaF1sUPGmcH/awsL2BTXTE9o0EGfaFF/50g\nQUMIIeYlFtP89SP7+fbzbbz/ylVsayjhQMfIov/eswN+VpUXsLGuCIBjWco2JGgIIcQ87D0zxOP7\nz/FXN63j83dt4ZKVZRzqHCEaW7wWTcFIlK7RAI3xTAOyt4JKgoYQQszDsW7jzfq9O1ahlGJbYwn+\nUJSTvd5F+50dQ+NoDasqCqj0uKgqcnG0KzsrqCRoCCHEPBzvHqPY7aCm2AXA1oZSAMs9oUbGw8Qy\nzErMPRorywsA2FRXnLViuAQNIYSYhxM9Y2yoLUIp4zDS1RWFFLkdHOhIHzSiMc2N/+d3fOKR/WTS\ncfzsQDxoVMSDRm0RJ3u9hKOxObyCzEjQEEKIOdJac7x7jPU1RYn7bDbF1oYSS0GjfdDPoC/Ez/ef\n4/uvnJnxur/9yUH+48VTidtnB/3k59mp8hjZzaa6YkLRGG19i99ORIKGEELMUc9okNFAhI21RZPu\n39ZQyrGusbQb/VrjdY+1VYX846+O8PqZoWnXnOwd48d72/n2c28miutnBozltmZ2YxbDszFFJUFD\nCCHm6HiPUXxOzjTAqGtEYjrtiqbWXuPnv/+hHdSV5POx//o9/d7gpGt+vKcdgN6xIHtODwJGhtIY\nr2cArKkqxGm3SdAQQoil7ER36qCxvdFaMfxkj5e6Ejf1pfn82/suZcgf4jOPTZyPEYrE+OnvO7lh\nfRX5eXZ+efAcWmvODvpZVTERNPLsNtZVe7Ky7FaChhBCzNHxnjGqi1yUFTon3V9b4qa6yMXBNJv8\nWnu9rKv2ALBlRQkfv7mZJw53J9qQPH2kh0FfiD+7pombNlXzxKFuukcDjIejiZVTpju21iWC1WKS\noCGEEHN0vNtYOZXKtsbSWTONWExzstdLc/XEz3/4utU0VRTwuV8cJhSJ8fCes6wocXNdcxV/eHEd\n/d4Qj+7tACZWTpk+duM6PvnWDQvwqmYnQUMIIeYgGtO09o5Nm5oybWsooa3fx8h4OOXjncPjjIej\nrK/xJO5zOez8/du30Nbn4x9+eYQXT/bz7pZG7DbFjRurKXTa+c+XjFVUUzONbJGgIYQQc9A+6CcQ\njrFhpqARnyp6Y4YpKnPHeHNS0AC4cWM1t2yq5ge7jSW4d1/eCIA7z84tm2sY8odRChrK8hfkdWRK\ngoYQQsyBuXJqtukpp8PGE4e7Uj5urpxaVzX95z/7h1twOmxc31xFfelEcLjj4joA6orduBz2eY1/\nrnIaNJRStymljiulTiqlHpjluncppbRSqiWb4xNCiJmYK6emZgqmYnceb9+6gsd+38lYYPoUVWuP\nl+oiFyUFedMeW1lRwE/+4iq++MdbJ91/w4YqilyOafWMbMpZ0FBK2YFvArcDm4E/UUptTnFdEfBx\n4NXsjlAIISY71e9LtPs43jPGyvICCpyOGa9//1Wr8IWi/Hxf57THWnu9MwYcMPZ61Ja4J93nctj5\n8ru38f/evH6Or2D+cplpXAGc1Fq3aa1DwMPAXSmu+wfgS0Agm4MTQohkL5/sj/eJOkAgHOVEz8xF\ncNO2hhIuri/hB7vPTOotpfX0lVNW3XZRLVetrcj45xZKLoNGPdCedLsjfl+CUuoSoFFr/ctsDkwI\nYV0gHOX+//49rT3Zac2dK+bBSo/t6+Tub79CW5+PDbUzZwoASinef+UqTvR4efXUYOL+rpEA3mAk\nsUfjfJLLoKFS3JcIxUopG/A14JNpn0ip+5RSe5VSe/v6Fv+YRSHEhFdPDfLLg13sbhvI9VAWVWvP\nGLXFbh58/2W82eslEtNpMw2At29bQbHbkVgNBRM9p5olaGSkA2hMut0AnEu6XQRcBPxOKXUauBLY\nmaoYrrV+UGvdorVuqaqqWsQhCyGmMoPFWDCS45EsrhO9YzTXeHjrlloe+9g1vHfHSt6yoTrtz+U7\n7by7pZEnD3XTO2rMsptZWbOFoLPU5DJo7AGalVKrlVJO4D3ATvNBrfWI1rpSa92ktW4CdgN3aq33\n5ma4QohUzKDhDSzfoGHu3jYzi/U1RfzTH11MSf70lU+pvO/KVcS05v4f7WPYH+Jkr5eKQiflU9qP\nnA9yFjS01hHgfuBJ4CjwiNb6sFLq80qpO3M1LiGEdb5gJNFfyXueZRoj42F+e6TH0lneHUPjBMKx\nOU8nra4s5Gv3bGf/2WH+6P++zGunB8/LegbAzGvFskBr/Wvg11Pu++wM174lG2MSQlj3+pmhxJtu\nrjONl9/sp2NwPLGDOp2//clBnjjczea6Yj535xauWF0+47XmRrz5TCfdtb2e+tJ8PvL9vQz5w1yd\nwxVQ85HToCGEOL/tbhvAYVPUl+XnvKbxxd8co7XXyzsvrcdhn30S5YXWPp443M0dW+vYd2aIu7/9\nClevrSAS1XSNjqNQPP6xaxLda0/0GIXr+WYHLU3l/Pxj1/A/Hz/MHRevmNdz5Yq0ERFCzNnutgG2\nNpRQU+TOWqZxoH04cRiRqXc0wIGOEfyhaOINfiahSIzP7TzMqooCvnr3NnZ98i18/OZm+saC2Gyw\noaaYs4N+nm+dWInZ2musnLJaw5jNqopCvv/nV+R0r8V8SNAQQsyJWc/YsaYCj9uRtZrG5395hL/8\n4euEo7HEfbuO9Sa+35/m4KOHXj7Nm30+PvuHm3E57OQ77Xzi1vU8/YkbePi+q/j2+y+jtCCP504k\nBY2e2XdvX0gkaAgh5uT1M0NEYpor11TgcWUnaJg7qfu9IZ5NChS7jvZQX5pPeaGT/e3Tz9k29Y4G\n+PquVm7cUMXNm2pSXmO3Ka5dV8kLrf1orVOee3Ehk6AhhJiT3W0D2G2KllVleNwOxrIwPTXgCyXO\np3hkr9FQYjwU5cWT/dyyqZptDSWzZhrfeq6NYCTKZ9++Zdbfc/36KvrGghztGkt57sWFTIKGEGJO\nXj01yNaGEgpdDopcDrzB1IcNLaS2Ph8Am+uKefZ4H72jAV462U8gHOOWzTVcsrKM1l5vyq6ygXCU\nn+3r4G1balldWTjr77m+2dgk/EJrHyd6Zu9me6GRoCGEyJg/FOFA+zBXrjGKuR6Xg0A4NqnOsBje\n7DOK3H97+0aiMc3P9nWy61gPHpeDHasr2N5YitakPJv7ycPdDPvDvOfylWl/T22Jmw01RTzf2pdo\n+bFOpqcACRpCiDl4+kgPkZjmuuZKADxuY/W+bw51jf/x8D5+8MppS9e29XlxOmxcu66Sy5vKeGRP\nO7uO9nLD+iqcDlvitLxUU1Q/3tNOQ1m+5f0R16+vZM+pIQ52DFNT7FqQlVPLgQQNIUTGHn6tnZXl\nBVy5eiLTADKuawz5Qvx8/zm+vquVYCSa9vo3+3ysqSzEblO8u6WRtn4fvWNBbt5k9IAqyc9jTVUh\n+85ODhpnBny8/OYA97Q0YrOl6pU63fXrqwhFYzx1uMdSY8ILhQQNIURGTvf7eKVtgHsun3gDLnLP\nLWi8fsZY6dTvDfHEoe6017f1eVlbZdQW7ri4jgKnHZuCG5MaB17SWMb+9qFJ51c8srcdm4J3t1jb\nLQ5weVM57jwbkZiWlVNJJGgIITJivgG/67KGxH0elzF1k+my2z1nBsmzKxrL8/lhUuvwVIKRKGcH\n/aypMorYhS4HH7luDe+6rCGxcxtg+8pS+r0hOobGAYhEYzy6t4MbN1RPOwlvNu48OzvimZQUwSdI\n0BBCWBaJxnj09Q5u2lhNTfHEG7BZ08h0BdXe00NsbSjlA1c2sef0EEe7Rme89uyAn5gmkWkA/PWt\n6/nSu7ZNuu6SKXWN3xzqpncsyD0We1IlM2s2stx2ggQNIYRlzx7vo28syD1TViDNpaYRCEc52DFM\nS1MZ725pwOWwzZptmCunzExjJhtqi3A5bLzSNsA///oo/+PH+2mqKODGjenPvpjqPVes5PN3beGS\nxrKMf3a5kqAhhLDsx3vOUl3k4sYNkw87K0pkGtaDxsGOEcJRzeWryiktcHLnthU8tq8z5R4LMIrg\nAGuqZv/Un2e3cXF9Cf/96lm+/Xwbd7c08PjHriUvTRPDVDwuBx+4qsly8fxCIEFDCGFJ71iAZ471\n8q7LGqZ1kTUzjUyaFppNBy9bZXyKf/9Vq/CHovzs950pr3+zz0ttsTvxu2Zz1/YVbG0o4eH7ruSf\n37mVkgJZLrtQJGgIISx5o2OEmCaxvDWZuYopk0xj7+lBmqs9iSL21oZSmioKeOXN1GeNv9nnSzs1\nZXr/VU3svP/axOZDsXAkaAghLDnVb0wPra6cPj2klMLjst5/KhbT7D0zREvT5FpBbYmbAV9w2vVa\n60nLbUXuSNAQQlhyqt9HSX4eZTNM9RS58yxnGid6xxgLRGhZNfm0vAqPiwFfaNr1fd4gY4GI5UxD\nLB4JGkIIS04P+GiqLESp1EVhj8thuaax57Sxqe/ypslBo7LQyYB3etAwGxVKppF7EjSEEJac7vez\nuqJgxsczOYjp9dODVBe5aCzPn3R/hcfFyHiYUGRy40Nzue3aeR63KuZPgoYQF5CjXaN86tED096U\n0wmEo3QOj6esZ5g8Loflc8L3nB7i8qbyaVlLebwoPuSfnG209flw59moK7a+o1ssDgkaQlxAnjnW\ny6Ovd/DaqcH0Fyc5M+AHoKkyTaYxwx6LZO2DfjqHx7m8afqGuUqPETT6vZOL4W/2eVlT6ZH9EkuA\nBA0hLiB9Y8ab8a5jPRn93Kn++G7sWTKNIotHvr4aD1hXra2c9liFxwUwra7ROTQ+bSpL5EZOg4ZS\n6jal1HGl1Eml1AMpHv+EUuqIUuqgUmqXUmpVLsYpxHJhfoLfdbR3UhfYdE71W8g0LBbCd7cNUF7o\npDlFfaIiPj01OGUFVfdogFqZmloSchY0lFJ24JvA7cBm4E+UUpunXLYPaNFabwV+Anwpu6MUYnkx\ng8bZQX+iuGzF6X4flR4nRe6Zd1Z73A58oSjR2OzBaHfbADtWl6ecajIzjeTpKX8owlggQk0GHWrF\n4sllpnEFcFJr3aa1DgEPA3clX6C1flZr7Y/f3A00IISYs35viO3xLrC7jvZa/rlT/b6052qb7T18\noZmzjfZBPx1D4zPu1C52O8izq0l7NbpHAgCSaSwRuQwa9UB70u2O+H0z+RDwm0UdkRDLXL83yMX1\nJWxZUZxZ0Bjw0VQxe9BINC2cZYrKrGfMFDSUUlQUuhhIyjS6RyVoLCW5DBqplkGkzGuVUu8DWoAv\nz/D4fUqpvUqpvX19fQs4RCGWj1AkxrA/TKXHxc0bq9l7ZpBh//SNdNGY5qWT/YmahzcYoW8syOo0\nu7HNg5hmayWyu22AsoK8lPUMU/mUDX498aAh01NLQy6DRgeQfCpKA3Bu6kVKqVuATwN3aq2nN6UB\ntNYPaq1btNYtVVVVqS4R4oJn9nSqLHJy06YaYhp+d3z6h6ynDnfz3u+8ypOHjeNXT5s9p9JkGlYO\nYjLqGRWzLp2t8DjpnzQ9ZYxbMo2lIZdBYw/QrJRarZRyAu8BdiZfoJS6BPg2RsCwnksLkUWRaIw/\n+r8vsetoZstYF9O+s0N88Yljk+7rHzPeiCs9LrbWl1DpcbHr2PT/rcxzu38QPxDJbFTYZLGmMVOm\nMVHPKE/5uKnSM3l6qmc0QJHLQaGFluhi8eUsaGitI8D9wJPAUeARrfVhpdTnlVJ3xi/7MuABHlVK\n7VdK7Zzh6YTImX5viH1nhxPz9UvBd144xb/97k1GkzbbmSuSKj0ubDbFTRur+N3xXsLRybvDzWNS\nXzo5QFufdyJoWK1pzLBXI1HPWDt7u/KKQuekJbfdIwGqi12z/ozInpzu09Ba/1prvV5rvVZr/U/x\n+z6rtd4Z//4WrXWN1np7/L87Z39GIbLP3DBnzr1n03goOu33RmOaF0/2A8amOFNfPGhUFxlvwDdt\nrGYsEEkECYBwNMYbnSPcuW0FeXbFf716ltP9PupK3OQ77bOOJd1BTGY9Y3110azPU+Fx4Q9F8cdX\nYfWMBaiVesaSITvChZinPq/xpp3toNE3FuTOf32RO77xAsFINHH/G50jjIwbGUZHUtBIzjTA2JFt\nU/BCa3/immNdYwQjMW7ZXMPbttTyk9c7ONo9lna5LSTXNGYOGunqGWDUNGBiV3jPSIAaqWcsGRI0\nhJin3tHgpK/Z0O8N8qf/vps3+7z0e0M8f2Lijf+FExPF7Y4hf+L7vrEghU57ImMoyc9ja0MpL52c\n+Nn97UY945LGUt535SpGxsMc7RpNW88AKHTOXNPo9wbpGBpPHO06G3NX+IAvRCym6R0LShF8CZGg\nIcQ8ZXt6ygwY7UN+HvrzKygryOPx/RPnar/Q2s9F9cW482yTpqf6vSEqiybXBq5dV8n+9uFE7WNf\n+zCVHicNZfnsWF2eWBqbbuUUgN2mKHTaU2YaR7tGAdi8ojjt80z0nwrS7wsSiWmZnlpCJGgIMU9m\nrcAXimZ0RvZcffKRA5wd9PPdey/nuuYq7thax2+P9uALRhgLhPn92SGub66ioaxg8vTUWDAxNWW6\ntrmSaEyzO34u9/72YbY3lqKUQinF+6402r1ZmZ4Cs9PtzEFjU52FoFE4MT3VE19uK9NTS4cEDSHm\nKXlaarGzjZdO9vPciT4+eesGrl5ndIm9a3s9gXCMp4/0sLttkEhMc11zFfWl+XQMT0xP9XuDidbj\npktXlpGfZ+fFk/2M+MO09fkSbUYA7rm8kc/ftYXr11vb/+SZodPt0a4xaopdifMyZmPWNPp9QdkN\nvgRJ0BBinvq8QZx243+lxQwasZjmC785Rn1pPu+/aqLh82Ury1hR4mbngXO80NpHgdPOpatKaSjL\nn1YIr5oyPeV02NixppwXT/ZzoMNYRbW9caLu4M6z84GrmnA6rL1VeNx5KQ9iOto1ainLAChwOihw\n2hn0hiaChkxPLRkSNISYp76xIBvrjGWki1kM/+UbXbzROcIn37oed97E8lebTfH27St4/kQfTx3u\nYcfqclwOOw1lBQz7w3iDEcLRGEPxFiJTXbuukrY+H7851IVSsLWxZM5jLHJNP4gpFIlxstdrOWiA\nkW0M+EL0jASw21TKcYvckKAhxDxorekdC7BlhfFGu1iZRigS4/88eZxNdcW8Y/v0vp53bltBJKbp\nHg1wXbMxldRQZhxa1Dk0nli+murN17z+J693sLbKQ/Es7c/TSTU9dbLXSySmMwsahS76vcb0VJXH\nhV1O7FsyJGgIMQ/eYIRAOMbqygIKnXZ6FinT+NFrZzk76OeB2zem3Oewua6YdfGVTtevN2od9fGg\n0THkn7ZHI9n6Gg9VRS7CUT2pnjEXqQrhiZVTdbNv6ktWEW9a2DMakEaFS4wEDSFSsHqqnbnctrrI\nTU2xm56xxck0Ht/fydaGEq5vnn5EKhgtxT9y3WquX1/F2iojeDQkgsZ4YoVXVdH0QrRSimvjRfV5\nBw2XY1pN42jXKC6HLW0bkmTG9FSQ7pEAtdJCZEmRoCHEFB1Dfjb+zyc41DmS9treMfPN2EV1sYve\nRZieCkdjHDo3yo7V5Sg18zTNPZev5Pt/fkXimiqPC5fDZmQa5jg9qT+137ixGoArVs/eTDCdIrcx\nPZUcdI92j7KhtgiH3frbTYXHxUC8EC4rp5YWCRpCTNHW5yMYiSVWE82mLylo1BS7F2V66ljXGKFI\njG0ZZgFKKerL8ukcHqffrGmkyDQA3r61jl2fvIH1NdankFLxuBxoDf6Q0dZEa83RrjE21VqvZ4Ax\nPRWJacYCEaolaCwpEjSEmGIofjBR8nLVmUxMT5lBI2B5asuq/YmlsJlPHdWXGstu+71BCpx2Cpyp\n24srpRLTWvMxtf9U71iQQV+ITRnUM2By7UUyjaVFgoYQUwzF23J3WggavWNB8uyKkvw8qotcBCMx\nRscXdlf4/rNGa4/60vyMf9bcFd6XYjf4Yph6psaRDHaCJ6tI2oQoezSWFgkaQkwx5Dc7xPrTXGlk\nGlUeF0qpRKuLhS6G728fSrT2yFRDWT6DvhBnB/3TdoMvhqlnapgrpzZmGjQKJwKctBBZWiRoCDHF\ncCbTU0m7rBNBYwGL4aOBMG9Oae2RCXMF1ZGu0Wm7wRfDxDnhRuA92jVGfWk+JfmZ7f2QTGPpkqAh\nxBRmptE7FiQQjs56bd9YkKoi402tJr40dCGL4QfbjRVcmRbBTQ1lBYCxOTCb01PmXo1M2ockKytw\nJp7PI8e8LikSNISYwiyEA3SNzJ419I0FEp/gq4umZxrPHuulrc8757GYK7i2Nswv04DUG/sWmjk9\n9f1XznDbvzzPyV4vWyy0Q5/K6bBRkp+XCMRi6ZCgIZal7pEA33mhbU4rmYb8ocSn29nqGpFojAFf\nKBE08p12it2OxF6NQV+IDz20h7u//Qrtg+nrI6nsOzvMmqrCjKd3TFUeV6KZ4tSzNBZDWaETl8PG\n62eGKC908sDtG/nza1bP6bkqPE6ZmlqCJO8Ty9JPf9/Bl588zrXNlWzMcI/AkC/MlhXFvHpqcNa6\nxqAvhNYTZ24Dk/Zq/PZIDzENvmCUe//zNX76F1dTZqE1uElrzf724URbkLmw2Yy9Gqf6fVRloRDu\ncTl47lM3UpzvmHF5r1V/e9vGROYilg7JNMSyZGYIe04PZfyzw/4Qm+qKsdvUrMtuk3eDm5JbiTxx\nuJuGsny+92eX0zE4zke+vzdtjSTZuZEA/d7gvFt7mFNU2eoUW1vinnfAAHjbllquXjv3gCkWhwQN\nsSyZGcLe04MZ/VwwEsUXilLpcVJX4p51eqovRdAwWokEGQuEebG1n9u21LJjTQVfuXsbe88M8dWn\nT1gey/6zc9/Ul8zc35GN1VNi+ZOgIZaliaCRWaYxHF85VVrgTOymnknybnBTTbGb3rEAzxzrJRSN\ncdtFtQC8fdsKbttSy89+30EkGrM0lgMdwzgdtoyn16ZaW+XB6bBJ0BALIqdBQyl1m1LquFLqpFLq\ngRSPu5RSP44//qpSqin7oxTnm1hM0zk0TpHLQefwOOeG0++3MJkrp8oKnNPO2J6qNz4NlTztUxNv\nMf6j185SVeTi0pUTp+DduX0F/d4Qr55Kn/30jgV4fH8n2xtKLZ+aN5P3X7WKX/7VtQsyZSREzoKG\nUsoOfBO4HdgM/IlSavOUyz4EDGmt1wFfA76Y3VGK81GfN0goGuMPLq4DYO8Z69nGkM/INMoK8mgo\ny6dnLEAokjoz6BsLUux2TDpFz9zgt7ttkLdurpl09sVNG6spdNrZuf/crGMIR2Pc/1/7GBkP87k7\nt1ge+0zcefZ5NyIUwpTLTOMK4KTWuk1rHQIeBu6acs1dwEPx738C3Kzm0ktBXFDMOsQtm2socNoz\nqmskMo1CJ/Vl+WgNXSOps40+b3BaB9bk2+bUlMmdZ+etW2r5zaGuGQMRwD/96iivnR7ki3+8lc1z\n2OMgxGLKZdCoB9qTbnfE70t5jdY6AowAFVOfSCl1n1Jqr1Jqb19f3yINV5wvzCmlpooCLl1ZltEK\nqsnTUxOHGKXSO2r0nUpmbkYrdju4cs20f6rcuW0Fo4EIz59I/e/0sX0dfO/l03z42tXcleJYVyFy\nLZdBI1XGMHUnlpVr0Fo/qLVu0Vq3VFVVLcjgxPnLfJNvKCugpamM492jjMZ7IaUzUQjPozHegmOm\nZbfJfadMVUUubApu2VRDXopDh65ZV0lpQR6/OJh6iuqbz77JtoYSHrh9o6XxCpFtuQwaHUBj0u0G\nYOr/SYlrlFIOoATIbA2luOB0DBkdXfOddi5vKiemjZ3VVgz5QuTn2XHn2aktcWNTM+8K7xsLTlo5\nBeBy2Pnmn17K37xtQ8qfcTps3H5RHU8f6WE8NHnPxmggzMleL7dsqsnolDshsimX/zL3AM1KqdVK\nKSfwHmDnlGt2AvfGv38X8Ixe6BNuxLLTMTROfTxL2N5Yit2mLNc1Bv0hyuO7tvPsNmqL3Smnp8YC\nYfyhaMrWHLdfXMeKWc6+ePss904bAAAgAElEQVS2OvyhKLuO9Uy632xOuH3l/PZlCLGYchY04jWK\n+4EngaPAI1rrw0qpzyul7oxf9h9AhVLqJPAJYNqyXCGm6hgaT9QjCl0ONtcVs8di0Bj2hyktmOjz\n1FBWQEeKJbvHuscAWDeH0+52rK6gusjFr9/omnT//naj9jLX5oRCZENOF25rrX8N/HrKfZ9N+j4A\nvDvb4xLnL3OPxlu31CTua2kq40evnSUcjaWsMyQb8ocSbbnBaMGRal/FwQ4jK9jaUJLxGO02xVs2\nVPHEoW4i0VhiKmp/+/yaEwqRDTJxKpYVc4+GeY4EQMuqcgLhGIfPjab9+amZRn1ZPl0j44Sn7OI+\n2DFMbbF72pJbq65rrmI0EOFAPPgYzQlH5t0yRIjFJkFDLCtm0Tr5HImWJmNX9usWNvkN+iZqGubz\nxLTRaj3ZwY6ROWUZpmvXVaIUiaW3ncPj9HuDXCJBQyxxaYOGUup+pVRZuuuEWArMonVjUtCoKXZT\nX5rP62dmr2tEY5rRQJjSSdNTBZOeF2BkPMypft+cT9MDY/Pg1oZSXmg1gsb+dmN113yeU4hssJJp\n1AJ7lFKPxHtFyY5ssWSZb+71pQWT7m9pKuP1M0OzHso0Mh5Ga6OFiGltvNBtnqAHcKjTmFK6uH7u\nmQbADc2V7G8fZsQf5kD7wjQnFGKxpQ0aWuvPAM0YK5k+CLQqpf63UmrtIo9NiIwl79FI1rKqjJ7R\n4KwNCJN3g5tqS9xcXF/Cbw51J+6bOIJ1fkHj+vVVxDS89GY/+9uHuWhF8bybEwqx2Cz9C43vjeiO\n/xcByoCfKKW+tIhjEyJjyXs0kl26Kn1dY8hnBI3kQjjA7RfXcqB9ONEt942OEVZVFEyaxpqL7Y2l\nFLkdPHOslzc6R2RqSpwXrNQ0Pq6Ueh34EvAScLHW+i+By4A/XuTxCZGR5D0ayTbWFuNxOWYPGvEW\nIuVTjmS9/SKjW+4T8WzjYMfIvKemABx2G9esrWTngXMEwjFZOSXOC1YyjUrgnVrrt2mtH9VahwG0\n1jHgDxd1dEJkwNyjkSpo2G2KS1aWztomPdX0FMDqykI21hbxxKFu+r1BOofH2bZAG/CuW1+Z6Hh7\nSaOsNxFLn5Waxme11mdmeOzowg9JiLlJtUcj2aUrjeaFYzM0Lxz2p56eAqPN+Z4zgzxztBeYfz3D\ndH2z0WCzvNBJY/nMrUeEWCqk6iaWjVR7NJK1NJUR0xPLW6ca9IVx2BQe1/RGCbdfVIfW8PVdrSgF\nWxZgegqgsbyADTVFXN5UhixMFOcDOf9RLBup9mgk295Yik0ZxfDrmqe30B/2hygrdKZ8815f42FN\nZSFt/T6aqz0pA8tc/fDDO3BKV1txnpB/qWLZaB80Mo2pezRMRe48NtQWz1gMN/pOpe77pJRKnMS3\n0A0Fq4pclMzwe4VYaiRoiGWjfXCcqiLXtD0ayVpWlbHv7DDR2PRNfkP+8KzLaM0zx6V1ubiQSdAQ\ny8bZQf+MU1OmlqYyvMEIb8R3dScb8s2caQBcVF/Co39xFXe3NMx7rEKcryRoiGXj7KCfleWpp6ZM\nN6yvwm5TPHW4e9pjQ/7wtD0aU13eVI7LMXMmI8RyJ0FDLAvhaIyukfG0QaO0wMlVayp44lD3pD5U\nWmuG/aF57/IWYrmToCGWhXPD48Q0NKQJGgBvu6iWtn4fJ3u9ifu8wQiRmJ51ekoIIUFDnIci0Rj+\nUGTSfWfjK6fSZRoAb9tcg1ITbUEAhnzGhj/JNISYnQQNkTWDvtCMu7Ez8Y1nTnLrV5+fNL3UPmjs\n0bASNKqL3Vy6sownkuoag/Hd4OUSNISYlQQNkTX3fvc1/u6xQ/N+nl1He+gcHp/U5vzsoJ88u6LG\n4vGrt22p5fC5UdoH/URjmq88dRyn3caG2qJ5j0+I5UyChsjIiD+cco9DOqOBMIfOjXCwI3ULD6uG\n/SGOdBlnfR8+N7Fstn3QT0NZAXabtVYcb9tibNR78nA3X37yOC+09vMP79hCo4VMRYgLmQQNkXCq\n30c4Gpvx8X5vkKu/sIsfvXY24+c+1DGC1kZGMLUekYnXTg1izkodPjeauL99yJ/RG/7KigI21xXz\nrefa+NZzb/KnO1Zyz+Ur5zwuIS4UEjQEAGcH/Nz0ld/xJw/uThw2NNXP93XiC0UTn/QzsS/eJFBr\nJq1aytQrbQO4HDaaKgo4khQ0rGzsm+q2i2rp9wa5ZGUpf//2zXMekxAXkpwEDaVUuVLqaaVUa/zr\ntIMElFLblVKvKKUOK6UOKqXuycVYLxQdQ360htfPDnHHN17g2WO9kx7XWvPjPe3xa2c+MnUmB9qH\nKYi39zjRM/egsbttkJamMrY3liYyjdFAmGF/2FIRPNl7rmjkT3es5Fvvu0w27AlhUa4yjQeAXVrr\nZmBX/PZUfuADWustwG3AvyilpOnPIjFXD/3bey+jtiSfP/veHnYeOJd4/EDHCK29XlwOGx3x5a2Z\nONAxzM2banA6bJzoGZvTGId8IY52jXLl6gq2rCihezTAgDeYaFSYadCoLnLzv//oYsvFcyFE7oLG\nXcBD8e8fAt4x9QKt9QmtdWv8+3NALzC9n7VYEIPx87EvW1XGYx+9mktWlvK5nYcT9z+ytx13no0/\nvqyBjqFxYhkUw7tGxukZDXLZylLWVnnmHDRePTUIwFVrK9iyohiAI12jiaAhRWwhFl+ugkaN1roL\nIP61eraLlVJXAE7gzRkev08ptVcptbevr2/BB3shGPCaR53m4c6z84V3bmUsEOYff3mE8VCUX+w/\nxx9cXMemumJC0Ri9Y0HLz30gXs/Y1ljKhhoPJ7rnFjR2tw3gzrOxtaGUzfGgcfjcaGJjnwQNIRbf\noh3CpJT6LVCb4qFPZ/g8dcAPgHvj55JPo7V+EHgQoKWlJfP1oIJBX4iS/Dwc8cOANtQW8Zc3rOUb\nz5xEKcVYMMLdLY0EwlHAWK1UW2JtWmdf+zB5dsXmFcWsry3i5/vPMRoIU+zOrGXH7rYBWlaV43TY\ncDqc1Jfmc/jcKKX5eRS7HZTkSwsQIRbbomUaWutbtNYXpfjvcaAnHgzMoNCb6jmUUsXAr4DPaK13\nL9ZYhRE0KqZ0eP3ojetYU1XIT3/fwaqKAnasLk98mm/PoK5xoH2YzXXFuBx21lcbm+daMyyGD3iD\nHOse46q1FYn7Nq8o5si5EaO7bYVkGUJkQ66mp3YC98a/vxd4fOoFSikn8Bjwfa31o1kc2wVpwBec\n1hbcnKZSCu5uaUQpRX2psazVbNuRTjSmeaNjhO2NxhoGc8d1pnWN1+L1jCvXlCfu21xXTFu/jxM9\nYxkXwYUQc5OroPEF4FalVCtwa/w2SqkWpdR34tfcDVwPfFAptT/+3/bcDHf5G/SFUp4lccXqcp7+\n6xu47/o1gBFIaopdtA9ZyzRO9nrxhaJsiweN+tJ88vPsk4LGE4e6eWRv+6zP88s3uihw2icdtbpl\nRTFaQ9dIgMYyCRpCZMOi1TRmo7UeAG5Ocf9e4MPx738I/DDLQ7tgDfrCXLYqdbO+ddWeSbcbywos\nT08lF8EBbDbF+pqJFVQj/jB/8+gBvMEIPSMB/urm5mnP8es3uvjVwS4+fnMzefaJzzlb6ksmxiSZ\nhhBZITvCBbGYZsifOtNIpaEs3/IGv33twxS7HayuKEzc11xTxPFuo6bxvZdP4w1GuGF9FV95+gTf\n2NU66ed7RgP83WNvsK2hhL+6ad2kx1aUuBPFb5meEiI7JGich5451sO7v/XynBoHAtN6P40GjCaE\n5YUuSz/fWF5A18j4rH2qTPvbh9nWWIotqZHghpoi+uOb8r770ilu2VTDdz94Oe+8tJ6vPn2CTz/2\nBvvbh4nGNJ/6yUEC4ShfvWf7pCwDQCmV2K8hmYYQ2SFBYwl4fH8nX/9ta/oL415sHWDP6SEGfNb3\nSpj2nR1i6+ee4lj3RN+mgfgGvvJCa0tWG8sKiGnoGg4ARqby1q89x78/3zbpupHxMMe6R7ls1eQu\nMevjxfC/33mYkfEw99+0DrtN8eV3beN9V67k4T3tvOObL3HJ55/i+RN9fPoPNrG2avIUmWlrQylO\nhy1RoBdCLC4JGkvAY/s6+fEe651jO4eNekL/WCjj3/Wrg11EYpqjSU0HBxNBw1qm0VAeX0EVL4a/\n0TnCiR4vvzh4btJ1e+Idaa9cUzHp/vU1RgB45lgv1zVXJlZW2W2Kf3zHxbz+mVv4l3u2c936Kt67\nYyXvu3LVjGP56I1r+elfXI3TIf+UhciGnBTCl7u/f/wQK0rz+X9uWGvp+u6RAGNB6+3Cz8U/4fd7\nM880dsUbEXYm1STM3eBT92nMxFypZBbDnz1uPOcbnSMM+0OJI1NfPTWA02FLBAVTbbGbIreDsUCE\n+2+cXKcA48jVd1xSzzsuqU87lmJ3Hhc3lKS9TgixMOTj2SJ47kQfz7dab2fSMxrAG4xY7udkti7P\nNGi09Xk51e8DoDOp/fmQedSpxaBRV+LGblOJTOPZ430Uux1oDS+/OZC4bnfbIJc0luLOm9xBVinF\nZavKuGZdBTumZCFCiKVNgsYi8IWiDPqsnYUdCEcZ8ofRGvzxFh3prjdrEJkGjWfiWUZ1kYvOeLYC\nydNT1oKGw25jRamb9sFx+r1BDnYM88FrVuNxOXjxZD9gFNcPnxuZNjVl+vb7L+O7H7w8o/ELIXJP\npqcWgT8YYUhZO3a0d3Tijd8biOBxzf5XknxAUr83s5rGb4/2sLG2iKaKQlp7JzbXDXhDFDrt0zKC\n2TSWFdA+5Of5E31oDW/dXMORcyO82GoEjb2nB4lp2JG0gzuZnF8hxPlJMo0FprXGH44y6Auhdfrp\npu7RiU/8Y4H02UnytFJ/Bp1mR8bD7Dk9xE0bq6kvy6dzeDwxvkFfkDKLWYbJ2OA3zrPH+6gqcrG5\nrphr11VydtDP2QE/u9sGcdptXLpy2vlaQojzmASNBRYIx9AaQtEYvlD66aZJQcNCMdzMNCo9Tvoy\nmJ56/kQf0Zjm5k3V1JfmEwjHEtNSAymaFabTWJ5PvzfI74718pb1VdhsimubKwF48WQ/u9sG2L5y\nej1DCHF+k6CxwHxJG+eGfOmnj3pGJoKGN5A+aHQOB7Ap2LKiJLHqyYpnjvVSXuhke2MZ9fGztM2s\nZaa+U7MxN9ONBSPcuNE4DmVtlYfaYje/OdTFoc4RrlydempKCHH+kqCxwPzBiexiwELQmDw9ZS3T\nqCl2U1vstlwIj0RjPHu8l7dsqMJum+hUay67NYKGtT0apob4slu7TXHNOiPDUMr4/oXWfmIp9mcI\nIc5/EjQWWKaZRvdoAHee8dfgDVqoaQyNs6I0n8oiJwO+kKVlugc6hhn2h7l5Yw1g9I4CEnWNQV+I\nCk/m01NgHA+bfPjRdfEpKqfdxiVSzxBi2ZGgscD8SXWMQYvTU2aLDEuZxogRNCoKXURjmuHx9IFm\nf/sIAJevNt7ES/LzKHTa6Rwexx+KEozEMp6eqvK42NpQwt0tjZPuN7OObY0l5DulniHEciNLbhdY\ncjNAK0GjezTApSvLOHxuFG+aQngspukaDnDbRW4qi4zppH7v9MOTpjpybpSqIhfVRcbxrEopYwXV\n0PjEHo2CzIKGUoqd91877f6qIhcfvLppWr8pIcTyIJlGnDcY4TsvtHH43Mi8nseXVNMY9M8eNLTW\n9I4GqSt1U+i0p800+n1BQtEYDaX5VMank6wsuz3SNcrmuuJJ99WXGstuBzLc2GfF5+7cwtu3rViw\n5xNCLB0SNOIi0Rj/+Kuj7G4bnNfz+DOoaQz6QoSisXgvpry0q6fMnlMrSvOp8hiZRrplt6FIjJO9\nY2xeMTlorIgHjcF4p9zyDGsaQogLkwSNuJL8PPLsak5NAJOZezMqCp1pV0+ZK6dqi9143I6001Pm\naqcVpflUeszpqdl/R2vvGOGonp5plOUz7A8nzvrOdJ+GEOLCJEEjTilFRaEro13WqYzHM42Gsvy0\nmUZPPGjUlLjxuByMptkRbm7sW1GaT0l+Hg7b5CAXjsamTa8dOWe0QJ+aaZjLbg91Gtcv5PSUEGL5\nkqCRpLLIOf9MI17TWFGan7am0T1i/C6zVXjaTGN4HI/LQbHbgc2mqPA4GUga789+38Ed33gxcf42\nGPWM/Dw7TUnHrcLEsts3Okdw2m1pe14JIQRI0Jik0uPKuAngVP5QhPw8O5UeV9pMo3s0gFLGiqMi\nt8NCTWOc+tJ8VLwZ4tTxmktrnzjUnbjvyLlRNtQWYbdNbqBYX2pszmvt9VJWmJd4TiGEmI0EjSTG\nm7D1TONbz73Jy/FW4CZfKEqhy055oZPh8fCs53j3jASo9LjIi3/ST7d6ytij4Z5xvOZpfE8dMYKG\n1tpYOTVlagqM9uh5dpXR2eBCCCFBI4kx3WOtO63Wmq//tpWf7eucdP94KEqB00F5oROtYXiWKaru\n0QA1xcYbtseVZ6kQviLpLOxKz0QNJhrTHOsexeNycKhzlI4hP53D44wFItOK4AA2m6KuxHguKYIL\nIazKSdBQSpUrpZ5WSrXGv864E0wpVayU6lRK/etij6vK4yIUjTFqYWe2LxRlPBxldMqObF8wQoHT\nnmg1PpQUNE71+zjZ603c7hkNUFtsZA7m6qmZ2oL4QxGG/OEpQcNJfzzIner3EQjHuPdq4zztpw73\nzFgEN5nFcCmCCyGsylWm8QCwS2vdDOyK357JPwDPZWNQE8tY009R9cU/4U9d8eQPRSlw2hOf3pM7\n0f7tTw9y73dfS0xZGZmGETSK3UYhOrl3VTJzj0b9lEzDDHLm1NQfXFzH+hoPTx3p5kjXKErBxtqi\nlM9pdruVoCGEsCpXQeMu4KH49w8B70h1kVLqMqAGeCobg0oEDQvLbhNBY3zym7wvFKHQ5aCsYHKm\nobXmePcYncPjPHeil0A4yrA/PJFpxFcvzVTXSF5umxhvUXxXuDfIka5R8uyK5uoi3ralltdODfLS\nyX5WVxZS4Ey9Msp8LpmeEkJYlaugUaO17gKIf62eeoFSygZ8BfhUuidTSt2nlNqrlNrb19c350FN\nvAmnX0E1Y6YRNDIN89O7eVZ4nzfISHwq6792n520RwOM6SlgxrqGefaFmR3A5CB3tGuUtVUenA4b\nb9tSS0zDntNDKesZpgZzekp2gwshLFq0xflKqd8CtSke+rTFp/go8GutdXu65aBa6weBBwFaWlrS\nV7FnkNn0lPGmP7Wm4Q9HKHA6KCs02oWbbTrMWsYlK0t55ngvd2ytA0hkGkVu4/rkTONEzxgPPt/G\nGx0jtPaO4XTYqCmaWOmUvCv8yLnRxMl5W1YUJ3pLzVTPgKTpqQybFQohLlyLFjS01rfM9JhSqkcp\nVae17lJK1QG9KS67CrhOKfVRwAM4lVJerfVs9Y95KStwYlMWg0b8mrF48doW3wdhZhouhx2Py5HI\nNN6MB43P3LGZd3/rZf71mZMA1JZMnZ6aCELfe/k0j+/v5Np1lbztolqub67EYZ9IDs2gcbxnjN6x\nYCKrUEpx6+Yavvfy6VkzjcubyvnEreu5YUOVhT8dIYTIXWv0ncC9wBfiXx+feoHW+r3m90qpDwIt\nixkwwDiFrrzQ2l4Nc3pKa6OOYWYKZk0DoKwwL1HTaO314nE5uHRlKTduqGbXMSNO1iQyjenTUz0j\nAZqri/jPP7si5RjKC40g90KrMSWXHCDeu2Mlbf2+WVuUOx02Pn5zc9rXKoQQplzVNL4A3KqUagVu\njd9GKdWilPpOjsYEGMtY+8bS1zSS6x7mEt1oTBMIxyiIHz5UXuhKNC082etlbbUHpRTvu9JYFpuf\nZ0+smjIzjeRd4d2jgUQmkooR5JwcaB8GYFNS0GiuKeL7f35FIpgJIcRCyEnQ0FoPaK1v1lo3x78O\nxu/fq7X+cIrrv6e1vj8bY6v0uBjwWcs0zFKLWdcw26IXxlcrlRfkJVqJtPZ6aa42Tui7fn0V9aX5\n1Ja4E+07zEwjuabRMxpMbP6bbbwxDXUl7sTeECGEWCzSpW6KSo+TM2d9aa/rGwtSX5pPx9B4ImiM\nx9uim8eclhU6OdHjZcQfpm8syLp40LDbFF+9e9ukPRlmoBmLT0+FozEGfMHE9NXM43UBY7PWLoQQ\nYqFI0JjCaM0x+/RULKbp9wa5Zl2lETTi2YF5lkahywgaFYVOBn0hTvYZXWfNTANgx5qKSc9psyk8\nrommhX1jQbQmbdCoiC+XnW2VlBBCLBTpPTVFZZGL8XAU3yx9oIbHw0RimjVVRrtxM9Mwf8bcTFdW\n6GQ8HOWNDqP77LqkoJGKx+XAGzSeK/mAplnHG19BtUkyDSFEFkjQmMLKXg1z5dTaKiMImBv8/Gam\nkahpGFnAntNDOB02GsoKZv3dRe6JTrc9I0bQqE5T06gqkqAhhMgemZ6aotIz0Zpj1ZSDi0xm0JjI\nNIw3erMQnp9YPWU812unB1lb5Zl2psVUyUe+9ljMNN55ST1FbgdNFbMHJCGEWAiSaUxhZhqzLbvt\n8xpv6HUl+RQ67dMzDdfkoJFcBJ9N8pka3aNB8uwqbTPB6mI3792xSg5REkJkhQSNKTKZnqoqclGc\nnzetplGYVNMwNVsIGsXuvMSO8N7RANVFbgkGQoglRYLGFBVJ01Mz6RsLkp9np9Bpp9idNy3TMDf3\nJXePtZppmNNT6Tb2CSFELkjQmCLPbqO0IC9t0KgqcqGUojjfkahpmPsuzDYixe48zDKGlUzDk3RO\neE/SqX5CCLFUSNBIodLjmnR40lR93mBi1VJypjEeiqIUuBzGH6vNpigrcGK3qRmL6sk8Lge+UJRo\nTMd3g0umIYRYWiRopGAco5om04jXPorzJ4KGLxil0OmYVIcoK3SyqqIApyP9H7XZSqRnNIA3GJGg\nIYRYcmTJbQqVHheH4+drp9I3FmTHamNHd7HbMWnJrVnPMN2yqSaReaRjBo03+4w26umW2wohRLZJ\n0EjBaCWSOtMIRWIM+cMT01P5xoqnWEzjC0UT9QzTA7dvtPx7PS6jI615YJNkGkKIpUamp1Ko9DgZ\nC0YIhKPTHjM74CbXNGLxMzX8wemZRibMI18ngoYUwoUQS4sEjRSm7tU41j2aCCCJPRqJmsZES3N/\nKDqvoFE0LWhIpiGEWFokaKSQfPb2D145zW3/8gL/6xdHgMkb+8DINMDoP2XUNOY+41fkMmsaPopc\njmlTXUIIkWsSNFKojAeEb+xq5X8+fhiPy8Fj+zoY8oWmB438eNAYj8RrGvOfnur3BqmRjX1CiCVI\ngkYKZtPCZ471csfFdfzoI1cSCMf48d72RNAwd46bU0qj4+F4TWMemUbS0axSzxBCLEUy/5FCVZGL\nkvw8bt1cwxfeeTEOu40r15Tzg1fOcMOGKkry83A5jIxi0vRUeH41jYI8O0ph6fAlIYTIBQkaKbgc\ndl79u5tx500EgA9evZq/+OHr/PLAOaqT3tAnpqfC+IPReWUaNpvC43QwFozIHg0hxJIk01MzSA4Y\nALdsqqa+NJ/RQCSxcgompqcGfCFC0RiF88g0YKKuIZmGEGIpkqBhkcNu4wNXrQImiuBgNDgscNrp\njp+0VzDPFU9FEjSEEEtYToKGUqpcKfW0Uqo1/rVshutWKqWeUkodVUodUUo1ZXekk91zeSOFTjsr\nyyefklfszkuc6T3vTMNlBg0phAshlp5cZRoPALu01s3ArvjtVL4PfFlrvQm4AujN0vhSKi1w8tQn\nbuCjN66ddH9xviORaeTPe3rKqJHIWRpCiKUoV0HjLuCh+PcPAe+YeoFSajPg0Fo/DaC19mqt/dkb\nYmr1pfnTit3F7rxE0CicRyEcjA1+Sk1sMBRCiKUkV0GjRmvdBRD/Wp3imvXAsFLqZ0qpfUqpLyul\n5vcxfpEU5+cxFj9xr2Aem/sAVpS6aaooJM8u5SYhxNKzaEtulVK/BWpTPPRpi0/hAK4DLgHOAj8G\nPgj8R4rfdR9wH8DKlSvnMNr5KXZP/DHON9P461vX85Hr18x3SEIIsSgWLWhorW+Z6TGlVI9Sqk5r\n3aWUqiN1raID2Ke1bov/zM+BK0kRNLTWDwIPArS0tOiFGH8mzL0awLw29xk/75jXXg8hhFhMuZoD\n2QncG//+XuDxFNfsAcqUUlXx2zcBR7IwtowVJ7X/mO+SWyGEWMpyFTS+ANyqlGoFbo3fRinVopT6\nDoDWOgr8DbBLKfUGoIB/z9F4Z2W2R4f5L7kVQoilLCcfi7XWA8DNKe7fC3w46fbTwNYsDm1OJmUa\nMrUkhFjGZInOAjBrGnl2hdPieeBCCHE+kne4BWC2/sjPk6kpIcTyJkFjAZjTU3LSnhBiuZOgsQDM\n6an5LrcVQoilToLGAjA390mmIYRY7iRoLADzmFbJNIQQy50EjQXgdNjIz7PLclshxLInQWOBFOc7\nJNMQQix78tF4gXzyrRumHc4khBDLjQSNBXJ3S2OuhyCEEItOpqeEEEJYJkFDCCGEZRI0hBBCWCZB\nQwghhGUSNIQQQlgmQUMIIYRlEjSEEEJYJkFDCCGEZUprnesxLCilVB9wJtfjmINKoD/Xg8gyec0X\nBnnN54dVWuuqdBctu6BxvlJK7dVat+R6HNkkr/nCIK95eZHpKSGEEJZJ0BBCCGGZBI2l48FcDyAH\n5DVfGOQ1LyNS0xBCCGGZZBpCCCEsk6CRI0qpcqXU00qp1vjXslmuLVZKdSql/jWbY1xoVl6zUmq7\nUuoVpdRhpdRBpdQ9uRjrfCmlblNKHVdKnVRKPZDicZdS6sfxx19VSjVlf5QLx8Lr/YRS6kj873SX\nUmpVLsa5kNK95qTr3qWU0kqpZbGaSoJG7jwA7NJaNwO74rdn8g/Ac1kZ1eKy8pr9wAe01luA24B/\nUUqVZnGM86aUsgPfBG4HNgN/opTaPOWyDwFDWut1wNeAL2Z3lAvH4uvdB7RorbcCPwG+lN1RLiyL\nrxmlVBHwceDV7I5w8c2yzcoAAANhSURBVEjQyJ27gIfi3z8EvCPVRUqpy4Aa4KksjWsxpX3NWusT\nWuvW+PfngF4g7YajJeYK4KTWuk1rHQIexnjtyZL/LH4C3KyUUlkc40JK+3q11s9qrf3xm7uBhiyP\ncaFZ+TsG4wPfl4BANge3mCRo5E6N1roLIP61euoFSikb8BXgU1ke22JJ+5qTKaWuAJzAm1kY20Kq\nB9qTbnfE70t5jdY6AowAFVkZ3cKz8nqTfQj4zaKOaPGlfc1KqUuARq31L7M5sMUmZ4QvIqXUb4Ha\nFA992uJTfBT4tda6/Xz5ELoAr9l8njrgB8C9WuvYQowti1L9ZU1dpmjlmvOF5deilHof0ALcsKgj\nWnyzvub4B76vAR/M1oCyRYLGItJa3zLTY0qpHqVUnda6K/4G2ZvisquA65RSHwU8gFMp5dVaz1b/\nyKkFeM0opYqBXwGf0VrvXqShLqYOoDHpdgNwboZrOpRSDqAEGMzO8BacldeLUuoWjA8PN2itg1ka\n22JJ95qLgIuA38U/8NUCO5VSd2qt92ZtlItApqdyZydwb/z7e4HHp16gtX6v1nql1roJ+Bvg+0s5\nYFiQ9jUrpZzAYxiv9dEsjm0h7QGalVKr46/nPRivPVnyn8W7gGf0+btpKu3rjU/VfBu4U2ud8sPC\neWbW16y1HtFaV2qtm+L//+7GeO3ndcAACRq59AXgVqVUK3Br/DZKqRal1HdyOrLFY+U13w1cD3xQ\nKbU//t/23Ax3buI1ivuBJ4GjwCNa68NKqc8rpe6MX/YfQIVS6iTwCWZfPbekWXy9X8bIlh+N/51O\nDaLnFYuveVmSHeFCCCEsk0xDCCGEZRI0hBBCWCZBQwghhGUSNIQQQlgmQUMIIYRlEjSEEEJYJkFD\nCCGEZRI0hFhkSqnL4+dIuJVShfGzQi7K9biEmAvZ3CdEFiil/hFwA/lAh9b6n3M8JCHmRIKGEFkQ\n70+0B+Nchau11tEcD0mIOZHpKSGyoxyj91IRRsYhxHlJMg0hsiDeoO9hYDVQp7W+P8dDEmJO5DwN\nIRaZUuoDQERr/d/xs6VfVkrdpLV+JtdjEyJTkmkIIYSwTGoaQgghLJOgIYQQwjIJGkIIISyToCGE\nEMIyCRpCCCEsk6AhhBDCMgkaQgghLJOgIYQQwrL/H98tLTpT3EB8AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e4b2df28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e4a83908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import numpy\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.externals.six import StringIO\n",
    "\n",
    "#Build a simple data set with y = x + random\n",
    "nPoints = 100\n",
    "\n",
    "#x values for plotting\n",
    "xPlot = [(float(i)/float(nPoints) - 0.5) for i in range(nPoints + 1)]\n",
    "\n",
    "#x needs to be list of lists.\n",
    "x = [[s] for s in xPlot]\n",
    "\n",
    "#y (labels) has random noise added to x-value\n",
    "#set seed\n",
    "numpy.random.seed(1)\n",
    "y = [s + numpy.random.normal(scale=0.1) for s in xPlot]\n",
    "\n",
    "plot.plot(xPlot,y)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('x')\n",
    "plot.ylabel('y')\n",
    "plot.show()\n",
    "\n",
    "simpleTree = DecisionTreeRegressor(max_depth=1)\n",
    "simpleTree.fit(x, y)\n",
    "\n",
    "#draw the tree\n",
    "with open(\"simpleTree.dot\", 'w') as f:\n",
    "    f = tree.export_graphviz(simpleTree, out_file=f)\n",
    "\n",
    "#compare prediction from tree with true values\n",
    "\n",
    "yHat  = simpleTree.predict(x)\n",
    "\n",
    "plot.figure()\n",
    "plot.plot(xPlot, y, label='True y')\n",
    "plot.plot(xPlot, yHat, label='Tree Prediction ', linestyle='--')\n",
    "plot.legend(bbox_to_anchor=(1,0.2))\n",
    "plot.axis('tight')\n",
    "plot.xlabel('x')\n",
    "plot.ylabel('y')\n",
    "plot.show()\n",
    "\n",
    "simpleTree2 = DecisionTreeRegressor(max_depth=2)\n",
    "simpleTree2.fit(x, y)\n",
    "\n",
    "#draw the tree\n",
    "with open(\"simpleTree2.dot\", 'w') as f:\n",
    "    f = tree.export_graphviz(simpleTree2, out_file=f)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### simpleTreeCV.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e4a2d240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import numpy\n",
    "import matplotlib.pyplot as plot\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.externals.six import StringIO\n",
    "\n",
    "#Build a simple data set with y = x + random\n",
    "nPoints = 100\n",
    "\n",
    "#x values for plotting\n",
    "xPlot = [(float(i)/float(nPoints) - 0.5) for i in range(nPoints + 1)]\n",
    "\n",
    "#x needs to be list of lists.\n",
    "x = [[s] for s in xPlot]\n",
    "\n",
    "#y (labels) has random noise added to x-value\n",
    "#set seed\n",
    "numpy.random.seed(1)\n",
    "y = [s + numpy.random.normal(scale=0.1) for s in xPlot]\n",
    "\n",
    "nrow = len(x)\n",
    "\n",
    "#fit trees with several different values for depth and use x-validation to see which works best.\n",
    "\n",
    "depthList = [1, 2, 3, 4, 5, 6, 7]\n",
    "xvalMSE = []\n",
    "nxval = 10\n",
    "\n",
    "for iDepth in depthList:\n",
    "\n",
    "    #build cross-validation loop to fit tree and evaluate on out of sample data\n",
    "    for ixval in range(nxval):\n",
    "\n",
    "        #Define test and training index sets\n",
    "        idxTest = [a for a in range(nrow) if a%nxval == ixval%nxval]\n",
    "        idxTrain = [a for a in range(nrow) if a%nxval != ixval%nxval]\n",
    "\n",
    "        #Define test and training attribute and label sets\n",
    "        xTrain = [x[r] for r in idxTrain]\n",
    "        xTest = [x[r] for r in idxTest]\n",
    "        yTrain = [y[r] for r in idxTrain]\n",
    "        yTest = [y[r] for r in idxTest]\n",
    "\n",
    "        #train tree of appropriate depth and accumulate out of sample (oos) errors\n",
    "        treeModel = DecisionTreeRegressor(max_depth=iDepth)\n",
    "        treeModel.fit(xTrain, yTrain)\n",
    "\n",
    "        treePrediction = treeModel.predict(xTest)\n",
    "        error = [yTest[r] - treePrediction[r] for r in range(len(yTest))]\n",
    "\n",
    "        #accumulate squared errors\n",
    "        if ixval == 0:\n",
    "            oosErrors = sum([e * e for e in error])\n",
    "        else:\n",
    "            #accumulate predictions\n",
    "            oosErrors += sum([e * e for e in error])\n",
    "\n",
    "    #average the squared errors and accumulate by tree depth\n",
    "\n",
    "    mse = oosErrors/nrow\n",
    "    xvalMSE.append(mse)\n",
    "\n",
    "plot.plot(depthList, xvalMSE)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Tree Depth')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineBagging.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54f40090f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum MSE\n",
      "0.5164762448403564\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "import random\n",
    "from math import sqrt\n",
    "import matplotlib.pyplot as plot\n",
    "\n",
    "#read data into iterable\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "random.seed(1)\n",
    "nSample = int(nrows * 0.30)\n",
    "idxTest = random.sample(range(nrows), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nrows) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [xList[r] for r in idxTrain]\n",
    "xTest = [xList[r] for r in idxTest]\n",
    "yTrain = [labels[r] for r in idxTrain]\n",
    "yTest = [labels[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 30\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 1\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "predList = []\n",
    "\n",
    "#number of samples to draw for stochastic bagging\n",
    "nBagSamples = int(len(xTrain) * 0.5)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "    idxBag = []\n",
    "    for i in range(nBagSamples):\n",
    "        idxBag.append(random.choice(range(len(xTrain))))\n",
    "    xTrainBag = [xTrain[i] for i in idxBag]\n",
    "    yTrainBag = [yTrain[i] for i in idxBag]\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "    modelList[-1].fit(xTrainBag, yTrainBag)\n",
    "\n",
    "    #make prediction with latest model and add to list of predictions\n",
    "    latestPrediction = modelList[-1].predict(xTest)\n",
    "    predList.append(list(latestPrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #average first \"iModels\" of the predictions\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)])/(iModels + 1))\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Tree Models in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "print('Minimum MSE')\n",
    "print(min(mse))\n",
    "\n",
    "#with treeDepth = 1\n",
    "#Minimum MSE\n",
    "#0.516236026081\n",
    "\n",
    "\n",
    "#with treeDepth = 5\n",
    "#Minimum MSE\n",
    "#0.39815421341\n",
    "\n",
    "#with treeDepth = 12 & numTreesMax = 100\n",
    "#Minimum MSE\n",
    "#0.350749027669"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineGBM.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f54e4b37f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum MSE\n",
      "0.41094195113923954\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "import random\n",
    "from math import sqrt\n",
    "import matplotlib.pyplot as plot\n",
    "\n",
    "#read data into iterable\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "nSample = int(nrows * 0.30)\n",
    "idxTest = random.sample(range(nrows), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nrows) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [xList[r] for r in idxTrain]\n",
    "xTest = [xList[r] for r in idxTest]\n",
    "yTrain = [labels[r] for r in idxTrain]\n",
    "yTest = [labels[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 30\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 5\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "predList = []\n",
    "eps = 0.1\n",
    "\n",
    "#initialize residuals to be the labels y\n",
    "residuals = list(yTrain)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "    modelList[-1].fit(xTrain, residuals)\n",
    "\n",
    "    #make prediction with latest model and add to list of predictions\n",
    "    latestInSamplePrediction = modelList[-1].predict(xTrain)\n",
    "\n",
    "    #use new predictions to update residuals\n",
    "    residuals = [residuals[i] - eps * latestInSamplePrediction[i] for i in range(len(residuals))]\n",
    "\n",
    "    latestOutSamplePrediction = modelList[-1].predict(xTest)\n",
    "    predList.append(list(latestOutSamplePrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #add the first \"iModels\" of the predictions and multiply by eps\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)]) * eps)\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "print('Minimum MSE')\n",
    "print(min(mse))\n",
    "\n",
    "#printed output\n",
    "#Minimum MSE\n",
    "#0.405031864814"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineRF.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f550812a390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum MSE\n",
      "0.4236699323843097\n"
     ]
    }
   ],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "import random\n",
    "from math import sqrt\n",
    "import matplotlib.pyplot as plot\n",
    "\n",
    "#read data into iterable\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "#take fixed test set 30% of sample\n",
    "random.seed(1)  #set seed so results are the same each run\n",
    "nSample = int(nrows * 0.30)\n",
    "idxTest = random.sample(range(nrows), nSample)\n",
    "idxTest.sort()\n",
    "idxTrain = [idx for idx in range(nrows) if not(idx in idxTest)]\n",
    "\n",
    "#Define test and training attribute and label sets\n",
    "xTrain = [xList[r] for r in idxTrain]\n",
    "xTest = [xList[r] for r in idxTest]\n",
    "yTrain = [labels[r] for r in idxTrain]\n",
    "yTest = [labels[r] for r in idxTest]\n",
    "\n",
    "#train a series of models on random subsets of the training data\n",
    "#collect the models in a list and check error of composite as list grows\n",
    "\n",
    "#maximum number of models to generate\n",
    "numTreesMax = 30\n",
    "\n",
    "#tree depth - typically at the high end\n",
    "treeDepth = 12\n",
    "\n",
    "#pick how many attributes will be used in each model.\n",
    "# authors recommend 1/3 for regression problem\n",
    "nAttr = 4\n",
    "\n",
    "#initialize a list to hold models\n",
    "modelList = []\n",
    "indexList = []\n",
    "predList = []\n",
    "nTrainRows = len(yTrain)\n",
    "\n",
    "for iTrees in range(numTreesMax):\n",
    "\n",
    "    modelList.append(DecisionTreeRegressor(max_depth=treeDepth))\n",
    "\n",
    "    #take random sample of attributes\n",
    "    idxAttr = random.sample(range(ncols), nAttr)\n",
    "    idxAttr.sort()\n",
    "    indexList.append(idxAttr)\n",
    "\n",
    "    #take a random sample of training rows\n",
    "    idxRows = []\n",
    "    for i in range(int(0.5 * nTrainRows)):\n",
    "        idxRows.append(random.choice(range(len(xTrain))))\n",
    "    idxRows.sort()\n",
    "\n",
    "    #build training set\n",
    "    xRfTrain = []\n",
    "    yRfTrain = []\n",
    "\n",
    "    for i in range(len(idxRows)):\n",
    "        temp = [xTrain[idxRows[i]][j] for j in idxAttr]\n",
    "        xRfTrain.append(temp)\n",
    "        yRfTrain.append(yTrain[idxRows[i]])\n",
    "\n",
    "    modelList[-1].fit(xRfTrain, yRfTrain)\n",
    "\n",
    "    #restrict xTest to attributes selected for training\n",
    "    xRfTest = []\n",
    "    for xx in xTest:\n",
    "        temp = [xx[i] for i in idxAttr]\n",
    "        xRfTest.append(temp)\n",
    "\n",
    "    latestOutSamplePrediction = modelList[-1].predict(xRfTest)\n",
    "    predList.append(list(latestOutSamplePrediction))\n",
    "\n",
    "\n",
    "#build cumulative prediction from first \"n\" models\n",
    "mse = []\n",
    "allPredictions = []\n",
    "for iModels in range(len(modelList)):\n",
    "\n",
    "    #add the first \"iModels\" of the predictions and multiply by eps\n",
    "    prediction = []\n",
    "    for iPred in range(len(xTest)):\n",
    "        prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)]) / (iModels + 1))\n",
    "\n",
    "    allPredictions.append(prediction)\n",
    "    errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]\n",
    "    mse.append(sum([e * e for e in errors]) / len(yTest))\n",
    "\n",
    "\n",
    "nModels = [i + 1 for i in range(len(modelList))]\n",
    "\n",
    "plot.plot(nModels,mse)\n",
    "plot.axis('tight')\n",
    "plot.xlabel('Number of Trees in Ensemble')\n",
    "plot.ylabel('Mean Squared Error')\n",
    "plot.ylim((0.0, max(mse)))\n",
    "plot.show()\n",
    "\n",
    "print('Minimum MSE')\n",
    "print(min(mse))\n",
    "\n",
    "#printed output\n",
    "\n",
    "#Depth 1\n",
    "#Minimum MSE\n",
    "#0.52666715461\n",
    "\n",
    "#Depth 5\n",
    "#Minimum MSE\n",
    "#0.426116327584\n",
    "\n",
    "#Depth 12\n",
    "#Minimum MSE\n",
    "#0.38508387863"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### wineTree.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "__author__ = 'mike-bowles'\n",
    "\n",
    "import urllib.request, urllib.error, urllib.parse\n",
    "import numpy\n",
    "from sklearn import tree\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.externals.six import StringIO\n",
    "from math import sqrt\n",
    "import matplotlib.pyplot as plot\n",
    "\n",
    "#read data into iterable\n",
    "target_url = \"http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv\"\n",
    "data = urllib.request.urlopen(target_url)\n",
    "\n",
    "xList = []\n",
    "labels = []\n",
    "names = []\n",
    "firstLine = True\n",
    "for line in data:\n",
    "    if firstLine:\n",
    "        names = line.decode().strip().split(\";\")\n",
    "        firstLine = False\n",
    "    else:\n",
    "        #split on semi-colon\n",
    "        row = line.decode().strip().split(\";\")\n",
    "        #put labels in separate array\n",
    "        labels.append(float(row[-1]))\n",
    "        #remove label from row\n",
    "        row.pop()\n",
    "        #convert row to floats\n",
    "        floatRow = [float(num) for num in row]\n",
    "        xList.append(floatRow)\n",
    "\n",
    "nrows = len(xList)\n",
    "ncols = len(xList[0])\n",
    "\n",
    "wineTree = DecisionTreeRegressor(max_depth=3)\n",
    "\n",
    "wineTree.fit(xList, labels)\n",
    "\n",
    "with open(\"wineTree.dot\", 'w') as f:\n",
    "    f = tree.export_graphviz(wineTree, out_file=f)\n",
    "#Note: The code above exports the trained tree info to a Graphviz \"dot\" file.\n",
    "#Drawing the graph requires installing GraphViz and the running the following on the command line\n",
    "#dot -Tpng wineTree.dot -o wineTree.png\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
